﻿using System;
using SubsDownloader.Core.Entities;
using SubsDownloader.Core.EventArgs;

namespace SubsDownloader.Core.Interfaces
{
    public interface ISubsDownloader
    {
        string Name { get; }

        /// <summary>
        /// Download Subtitles for specific files
        /// </summary>
        /// <param name="fileName">File to download the subtitles for</param>
        bool DownloadSubtitle ( string fileName );

        /// <summary>
        /// Download Subtitles title
        /// </summary>
        /// <param name="titleFileInfo">Title to download the subtitles for</param>
        bool DownloadSubtitle ( TitleFileInfo titleFileInfo );

        void SelectTitle ( TitleResult titleResult );

        void CancelDownload ();

        void SelectSubtitles ( SubtitleResult subtitleResult );

        event EventHandler<NoMatchTitleFoundEventArgs> NoTitleMachFound;

        event EventHandler<NoMatchSubtitleFoundEventArgs> NoSubtitleMachFound;
    }
}